Skip to main content

Explain Incremental approach of developing software. List various benefits and limitations of incremental approach.

Incremental Model: Concept and Approach​

The Incremental Model is a software development approach where the system is designed, implemented, and tested incrementally (a little more is added each time) until the product is finished. The product is defined as finished when it satisfies all its requirements. This model combines elements of the waterfall model with the iterative philosophy of prototyping.

Key Characteristics of the Incremental Model​

1. Multiple Development Cycles​

  • The system is developed through a series of repeated cycles (increments)
  • Each cycle produces a deliverable, functional version of the software
  • Successive versions become increasingly complete and robust

2. Divided Requirements​

  • Requirements are split into different functional modules or features
  • Each increment focuses on specific functionality
  • Prioritization determines which features are implemented first

3. Parallel Development​

  • Multiple teams can work simultaneously on different increments
  • System components are developed in parallel when possible
  • Integration occurs as increments are completed

How the Incremental Model Works​

  1. Initial Planning & Requirements: Define overall requirements and allocate them to increments
  2. Architecture/System Design: Create the core architecture that will support all increments
  3. Increment Development (repeated for each increment):
    • Analyze specific requirements for the increment
    • Design the increment
    • Code and unit test
    • Integration and increment testing
  4. System Integration: Combine increments into the evolving product
  5. System Testing: Test the integrated system
  6. Delivery & Feedback: Deploy current version and gather feedback
  7. Repeat until all requirements are implemented

Types of Incremental Development​

1. Staged Delivery​

  • All requirements are defined up front
  • Project is divided into pre-planned increments
  • Each increment is delivered according to a predetermined schedule

2. Evolutionary Delivery​

  • High-priority requirements are implemented first
  • Requirements evolve based on feedback from previous increments
  • The plan for future increments can change based on feedback

Benefits of the Incremental Model​

  1. Early Delivery of Partial Functionality

    • Users get essential features sooner
    • Critical functions can be prioritized for early delivery
    • Provides working software earlier in the development process
  2. Flexibility in Requirements Changes

    • Changes can be incorporated in future increments
    • Easier to accommodate changes than in waterfall model
    • Requirements can evolve based on user feedback
  3. Easier Testing and Debugging

    • Each increment is smaller and easier to test
    • Problems identified in one increment can be fixed in subsequent ones
    • Reduced integration complexity compared to delivering all at once
  4. Better Risk Management

    • High-risk features can be identified and developed early
    • Problems are isolated to specific increments
    • Failures affect only the current increment, not the entire project
  5. Better Resource Utilization

    • Resources can be allocated to different increments as needed
    • Development teams can work in parallel
    • Specialized expertise can be applied where and when needed
  6. User Feedback Incorporated Earlier

    • Feedback can influence subsequent increments
    • Increases user satisfaction through involvement
    • Reduces the risk of delivering an unsatisfactory final product

Limitations of the Incremental Model​

  1. Requires Good Planning and Architecture

    • Initial system architecture must support all future increments
    • Poor initial design can lead to major rework
    • Requires thorough understanding of the system boundaries
  2. Interface Challenges

    • Interfaces between increments must be well-defined
    • Integration issues may arise between increments
    • May require additional effort to maintain compatibility
  3. Documentation Overhead

    • Each increment may require separate documentation
    • Maintaining consistent documentation across increments can be challenging
    • Updates to documentation with each increment increase overhead
  4. Management Complexity

    • Coordination of multiple development streams is challenging
    • Progress tracking across multiple increments requires careful management
    • Resource allocation across increments needs continuous attention
  5. Potentially Higher Total Cost

    • Multiple integration and testing cycles can increase cost
    • Additional planning and coordination overhead
    • Potential for rework if increments don't fit together well
  6. Not Suitable for All Types of Projects

    • Less effective for projects with highly interdependent features
    • May be inappropriate for small projects where overhead outweighs benefits
    • Challenging for projects with strict regulatory compliance requirements

The Incremental Model is particularly well-suited for large, complex systems where delivering partial functionality early provides significant value, and where requirements might evolve over time based on user feedback and changing business needs.